import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
// 使用Vuex插件
Vue.use(Vuex)
// 创建仓库
const store = new Vuex.Store({
  // state 用来存储 公共状态的
  state: {
    num: 10,
    // 公共的数据，初始值需要发送请求获取
    cates: []
  },
  // getters 相当于vuex中的计算属性，可以依据已有的state派生出新的值
  getters: {
    doubleNum (state) {
      return state.num * 2
    }
  },
  // mutations 存储修改 state的方法的
  mutations: {
    /*
      mutation第一个参数是 state
      第二个参数 是触发mutation传递的参数
    */
    ADD_NUM (state, n) {
      state.num += n
    },
    REDUCE_NUM (state, n) {
      state.num -= n
    },
    INIT_CATES (state, cates) {
      // 获取商品分类
      state.cates = cates
    }
  },
  actions: {
    /* FETCH_CATES (context, params = {}) {
      // context参数 跟 组件中的this.$store一样都是 仓库的实例
      // context.state
      // context.commit()

      axios.get('https://api.it120.cc/conner/shop/goods/category/all', { params }).then(res => {
        console.log(res)
        if (res.data.code === 0) {
          context.commit('INIT_CATES', res.data.data)
        }
      })
    } */
    FETCH_CATES ({ commit }, params = {}) {
      axios.get('https://api.it120.cc/conner/shop/goods/category/all', { params }).then(res => {
        console.log(res)
        if (res.data.code === 0) {
          commit('INIT_CATES', res.data.data)
        }
      })
    }
  }
})

// 导出仓库
export default store
